Stand alone security device for computer networks

ABSTRACT

A secured network interface unit (SNIU) for providing multi-level security on a network having a plurality of secured and unsecured users including: network interface means for communicating on the network; identifying the source and destination of a message intercepted on the network; determining the security levels of each of the plurality of users; a trusted computing base for determining whether the message, if transmitted to the destination user, will violate security parameters; and, cryptographically encrypting messages sent to, and decrypting messages received from another SNIU affiliated with the destination user.

CONTINUATION-IN-PART APPLICATION

The present application is a continuation-in-part of U.S. applicationSer. No. 08/688,525 to Holden et al., entitled A STAND ALONE DEVICE FORPROVIDING SECURITY WITH IN COMPUTER NETWORKS, filed Jul. 30, 1996 nowU.S. Pat. No. 5,802,178; and related to U.S. Pat. No. 5,577,209,entitled APPARATUS AND METHOD FOR PROVIDING MULTI-LEVEL SECURITY FORCOMMUNICATION AMONG COMPUTERS AND TERMINALS ON A NETWORK, issued toBoyle et al, Nov. 19, 1996.

FIELD OF THE INVENTION

The present invention relates in general to secure and multi-levelsecure (MLS) networks and in particular to a stand alone device forproviding security and multi-level security for computer hosts utilizedin secure and non-secure networks.

BACKGROUND OF THE INVENTION

Multi-level secure (MLS) networks provide a means of transmitting dataof different classification levels (i.e. Unclassified, Confidential,Secret and Top Secret) over the same physical network. To be secure, thenetwork must provide the following security functions: data integrityprotection, separation of data types, access control, authentication anduser identification and accountability.

Data integrity protection ensures that data sent to a terminal is notmodified en route. Header information and security level are alsoprotected against uninvited modification. Data integrity protection canbe performed by checksum routines or through transformation of data,which includes asymmetric private and public key encryption.

Separation of data types controls the ability of a user to send orreceive certain types of data. Data types can include voice, video,E-Mail, etc. For instance, a host might not be able to handle videodata, and, therefore, the separation function would prevent the hostfrom receiving video data. The system should include sequential reviewprior to data release where a plurality of users would review the datato approve release prior to actual release and the use of data type toseparate management type data from ordinary user traffic.

Access control restricts communication to and from a host. In rule basedaccess control, access is determined by the system assigned securityattributes. For instance, only a user having Secret or Top Secretsecurity clearance might be allowed access to classified information. Inidentity based access control, access is determined by user-definedattributes. For instance, access may be denied if the user is notidentified as an authorized participant on a particular project. Forcontrol of network assets, a user may be denied access to certainelements of the network. For instance, a user might be denied access toa modem, or to a data link, or to communication on a path from oneaddress to another address.

Identification of a user can be accomplished by a unique name, password,retina scan, smart card or even a key for the host. Accountabilityensures that the a specific user is accountable for particular actions.Once a user establishes a network connection, it may be desirable thatthe user's activities be audited such that a "trail" is created. If theuser's actions do not conform to a set of norms, the connection may beterminated.

Currently, there are three general approaches to providing security fora network: trusted networks, trusted hosts with trusted protocols, andencryption devices. The trusted network provides security by placingsecurity measures within the configuration of the network. In general,the trusted network requires that existing protocols and, in some cases,physical elements be replaced with secure systems. In the Boeing MLSLAN, for instance, the backbone cabling is replaced by optical fiber andall access to the backbone is mediated by security devices. In theVerdix VSLAN, similar security devices are used to interface to thenetwork, and the network uses encryption instead of fiber optics toprotect the security of information transmitted between devices. VSLANis limited to users on a local area network (LAN) as is the Boeing MLSLAN.

Trusted hosts are host computers that provide security for a network byreviewing and controlling the transmission of all data on the network.For example, the U.S. National Security Agency (NSA) has initiated aprogram called Secure Data Network System (SDNS) which seeks toimplement a secure protocol for trusted hosts. In order to implementthis approach, the installed base of existing host computers must beupgraded to run the secure protocol. Such systems operate at the Networkor Transport Layers (Layers 3 or 4) of the Open Systems Interconnection(OSI) model.

Encryption devices are used in a network environment to protect theconfidentiality of information. They may also be used for separation ofdata types or classification levels. Packet encryptors or end-to-endencryption (EEE) devices, for instance, utilize different keys andlabels in protocol headers to assure the protection of data. However,these protocols lack user accountability since they do not identifywhich user of the host is using the network, nor are they capable ofpreventing certain users from accessing the network. EEE devicestypically operate at the Network Layer (Layer 3) of the OSI model. Thereis a government effort to develop cryptographic protocols which operateat other protocol layers.

A number of network security products have been developed which includeRaptor Eagle, Raptor Remote, Entrust, Secret Agent and Veil. Although,these products serve the same purpose, a number of different approacheshave been utilized. For example, Raptor Eagle, Raptor Remote, and Veilimplement these products as software instantiations. While Entrust andSecret Agent utilize hardware cryptographic components. Additionally,Raptor products are also application independent.

A problem with the above described products is that none are based uponthe use of highly trusted software. Veil is an off-line encryptionutility, which cannot prevent the inadvertent release of non-encryptedinformation. While Raptor Eagle and Raptor Remote are based on softwareinstantiations and thus cannot be verified at the same level ofassurance. Secret Agent and Entrust while hardware based are dependentupon the development of integration software for specific applications.

It is therefore an object of the present invention, to provide a standalone multi-level security device which provides an adequate level ofsecurity assurances for computer hosts utilized in secure as well asnon-secure networks.

SUMMARY OF THE INVENTION

In accordance with the present invention, a network security apparatusand method for a network comprises a secure network interface unit(SNIU) coupled between host computer or user computer unit, which may benon-secure, and a network (i.e. a SNIU can be placed between twonetworks), which may be non-secure. When an SNIU is implemented at eachcomputer unit to be secured on the network, a global security perimeteris provided for ensuring security policy enforcement, controlledcommunication release, controlled communication flow, and secure sessionprotocols through each computer unit interface.

In a preferred embodiment, a hardware SNIU is configured to process adefined trusted session protocol (TSP) and perform the core functions ofhost/network interface by utilizing an association manager, sessionmanager and data sealer. The user/service interface function performs astandard communications stack function by handling all of the standardcommunications data translation between the Physical Data Link andNetwork protocol layers (i.e. layers one through three). Thehost/network interface does not require the same level of trust as therest of SNIU's software. This allows this software to be logically andphysically separated from the rest of the software without effecting theunderlying security of the system as a whole. The association managerfunctions include host computer and peer SNIU identification, audit,association setup and termination and maintenance of the sealer keysgenerated for the association between the two peer SNIUs. The sessionmanager functions include sealing, verifying message authenticationcodes, audit and enforcing a security on each datagram passed throughthe SNIU.

The above described SNIU is capable of communicating with other likeSNIU devices creating a global security perimeter for end-to-endcommunications and wherein the network may be individually secure ornon-secure without compromising security of communications within theglobal security perimeter.

Each SNIU is capable of dynamically discovering whether communicationsare with another secured user also using a SNIU, or with an unsecureduser utilizing no SNIU, using the dragonfly TSP and tables noting whichIP addresses are secured and unsecured.

Each SNIU is further capable of applying security parameters associatedwith each communicating computer for employing a global security system.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic diagram of an MLS network system in accordancewith the present invention;

FIG. 2 is a diagram of the hardware included in the hardware SNIU inaccordance with the present is invention;

FIG. 3 is a block diagram of the hardware SNIU in accordance with thepresent invention;

FIG. 4 is a block diagram of the hardware SNIU interfacing with thecomputer host in accordance with the present invention;

FIG. 5 is a data flow diagram for the hardware SNIU in accordance withthe present invention;

DETAILED DESCRIPTION

The present invention is directed to a secure network interface unit(SNIU), which is utilized to control communications between a user suchas a computer host and a network. In an alternative embodiment of thepresent invention the user may constitute a sub network in and of itselfcomprising many individual computers. The SNIU intercepts datagrams asthey are transmitted between the user and the network. The SNIUdetermines whether each datagram from the user is releasable to thenetwork and if and how it should be encrypted. Similarly, the SNIUdecrypts each datagram from the network and determines whether it isreleasable to the user.

When a SNIU releases a datagram from a lower classification user ornetwork to a higher classification user or network (i.e. a write up),the datagram is used to predict the expected response. When a datagramis received from the higher classification user or network, the SNIUcompares the datagram to the response which was predicted during thewrite up and, if they match, releases it (i.e., allows the write down)to the lower classification user or network. The SNIU implements acustom Trusted Session Protocol (TSP) to establish associations(described later) prior to permitting any communication between a userand a network. The TSP authenticates users and establishes encryptionkeys for an association. This method of providing security allowsexisting network assets and existing network protocols to continue to beused, thereby avoiding the need to replace an installed network base forimplementation of the multi-level security system. The connected host oruser equipment and the network backbone are therefore not required to besecure (trusted).

The SNIU according to the present invention can be configured in anumber of different embodiments depending on the particular physicallocations and forms of implementation. These embodiments include a standalone hardware SNIU and a software SNIU.

The hardware embodiment of the SNIU is implemented solely as a standalone hardware device. Such a configuration is desirable, since thestand alone SNIU is highly trusted. The stand alone SNIU is configuredto be inserted between existing hosts and a network. The SNIU istransparent to the host, and any legacy system or application softwarerunning on the host. The stand alone SNIU provides protection for anyhost connected to the network. There is no requirement that the attachedhost computers run a trusted operating system. The stand alone SNIUprovides a trusted boundary between the protected hosts and theunprotected network.

In these regards, protected means that the connection is with anotherknown SNIU (a unique digital signature identifies the SNIU), themessages are confidential (encrypted) and unaltered (cryptographicresidues validate the packets).

The software embodiment of the SNIU is implemented primarily as asoftware function resident in and executed from the host machine. Theonly hardware required is a commercially available cryptographic card(e.g., a Fortezza card) which plugs into the host computer's PCMCIA cardreader for example. Such a configuration is Redesirable, since thesoftware SNIU is designed to be installed in existing portablecomputers, which avoids the additional cost of additional hardwarerequired by a stand alone hardware SNIU. The software SNIU provides thesame network security features as the stand alone SNIU when the hostcomputer is connected to a home enterprise's network. The software SNIUalso extends that same level of security across the Internet (or anyother unprotected network) when the user is on the road and is remotelycommunicating with the enterprise network or other remotely locatedcomputer devices utilizing a similar software SNIU.

The software SNIU provides all of the functionality and security of thestand alone SNIU as well as complete interoperability with thesedevices. The software comprising the software SNIU is based on the samesoftware utilized in the stand alone hardware SNIU. The user of thesoftware SNIU assumes an acceptable risk in exchange for not requiringadditional hardware required by a stand alone SNIU, which cannot becircumvented or corrupted via attacks originating from externalhardware. By providing reasonable physical protection (not allowingunauthorized personnel physical access) and software protection(anti-virus protection), a software SNIU can be utilized providing theuser with an acceptable level of risk. If the user is confident that thesoftware comprising the software SNIU is not circumvented or modified,then he can enjoy the same degree of confidence as the user of a standalone device.

Referring now to the figures, wherein like references correspond to likecomponents of the invention, FIG. 1 illustrates an example of aMulti-Level Security (MLS) System in accordance with the presentinvention. This system 10 incorporates the various embodiments of theSNIUs in order to provide MLS for computer networks such as theInternet. For example, the SNIU devices 14 and 16, which are hardwareembodiments of the SNIU (hereinafter referred to as "Guards"), arecoupled between computer networks 34, 36 and 38 providing inter-networksecurity. Additional Guard devices 12 and 18 are coupled between userssuch as computer hosts 28 and 30, and the respective networks 34 and 38.The software embodiment of the SNIU are implemented as "Companions"within computer hosts 24 and 26, and provide network security withoutrequiring additional hardware. The auditors 20 and 22 are also hardwareSNIUs which are configured to communicate directly with the other SNIUsto log audit events and potentially signal alarms. The above describedsystem 10 enables secured, and non-secured users such as a web site 40,to communicate with each other without the danger of compromisingsecurity.

During operation, the SNIUs included in the above described system 10communicate with each other thereby creating a global security perimeterfor end-to-end communications, and wherein the network may beindividually secure or non-secure without compromising security ofcommunications within the global security perimeter.

Security System Policies

The security system of the present invention may implement a number ofsecurity policies suitable to the circumstances of a given networkenvironment. The major policy areas are: discretionary access control;mandatory access control; object reuse; labeling; identification andauthentication; audit; denial of service detection; data type integrity;cascading control; and covert channel use detection.

Discretionary access control (DAC) is a means of restricting access toobjects (data files) based on the identity (and need to know) of theuser, process, and/or group to which the user belongs. It may be used tocontrol access to user interface ports based on the identity of theuser. For a single-user computer unit, this mechanism may be implementedin the SNIU, whereas for a multi-user host, the DAC control may beimplemented at the host machine. Discretionary access control may alsobe implemented as discretionary dialog addressing, where the addressingof all communications originated by a user are defined, and for userdiscretionary access denial, wherein a user may refuse to accept acommunication from another user.

Mandatory access control (MAC) is a means of restricting access toobjects based on the sensitivity (as represented by a classificationlabel) of the information contained in the objects, and the formalauthorization (i.e., clearance) of the user to access information ofsuch sensitivity. For example, it may be implemented as dialoglattice-based access control, wherein access requires a correctclassification level, integrity level, and compartment authorization,dialog data-type access control, wherein correct data type authorizationis required for access, and cascade protection, wherein controls areprovided to prevent unauthorized access by cascading user access levelsin the network.

Object reuse is the reassignment and reuse of a storage medium (e.g.,page frame, disk sector, magnetic tape) that once contained one or moreobjects to be secured from unauthorized access. To be secured, reused,and assigned to a new subject, storage media must contain no residualdata from the object previously contained in the media. Object reuseprotection may be implemented by port reuse protection, session reuseprotection, dialog reuse protection, and/or association reuseprotection.

Labeling requires that each object within the network be labeled as toits current level of operation, classification, or accreditation range.Labeling may be provided in the following ways: user session securitylabeling, wherein each user session is labeled as to the classificationof the information being passed over it; dialog labeling, wherein eachdialog is labeled as to the classification and type of the informationbeing passed over it; and host accreditation range, wherein each hostwith access to the secured network is given an accreditation range, andinformation passing to or from the host must be labeled within theaccreditation range.

Identification is a process that enables recognition of an entity by thesystem, generally by the use of unique user names. Authentication is aprocess of verifying the identity of a user, device, or other entity inthe network. These processes may be implemented in the following ways:user identification; user authentication; dialog source authentication,wherein the source of all communication paths is authenticated at thereceiving SNIU before communication is allowed; SNIU sourceauthentication, wherein the source SNIU is authenticated before data isaccepted for delivery; and administrator authentication, wherein anadministrator is authenticated before being allowed access to SecurityManager functions.

An audit trail provides a chronological record of system activities thatis sufficient to enable the review of an operation, a procedure, or anevent. An audit trail may be implemented via a user session audit, adialog audit, an association audit, an administrator audit, and/orvariance detection, wherein audit trails are analyzed for variance fromnormal procedures.

Denial of service is defined as any action or series of actions thatprevent any part of a system from functioning in accordance with itsintended purpose. This includes any action that causes unauthorizeddestruction, modification, or delay of service. The detection of adenial of service may be implemented for the following condition: usersession automatic termination, such as when unauthorized access has beenattempted; user machine denial of service detection, such as detectionof a lack of activity on a user machine; dialog denial of servicedetection; association denial of service detection, such as detection ofa lack of activity between SNIUs; and/or data corruption detection, suchas when an incorrect acceptance level is exceeded.

Covert channel use is a communications channel that allows twocooperating processes to transfer information in a manner that violatesthe system's security policies. Detection of covert channel use may beimplemented, for example, by delay of service detection, such asmonitoring for unusual delays in message reception, or dialog sequenceerror detection, such as monitoring for message block sequence errors.

Details of the Hardware SNIU

Referring to FIG. 2, a diagram of the hardware included in the hardwareSNIU in accordance with the present invention is shown. The SNIU 78includes a Central Processing Unit (CPU) 82, which may be a 486 CPU, forexample. The CPU 82 is utilized to run the trusted software of the SNIU78, which will be described in detail later. The SNIU 78 also includestwo network interface adaptors 84 and 86, for example Ethernetcontrollers which are preferably PC/104 cards. The two Ethernetcontrollers 84 and 86 enable the SNIU 78 to be utilized over a standardEthernet Local Area Network.

Also included is a card reader 88 which is preferably a standard PCMCIAdevice type interface. The card reader 88 is adapted to receive aFortezza card 90 or any other a crypto card having a crypto engine, anda Flash Ram card 92 which preferably has a capacity of twenty megabytesfor example. The Fortezza card 90 is utilized to perform integrity andauthenticating functions, while the Ram card 92 is utilized to load theSNIU software and associated security parameters. Power is supplied tothe above described hardware by a five volt DC--DC converter 80 forexample.

Referring to FIG. 3, there is shown a block diagram describing theinterconnection of the hardware SNIU according to the present invention.A commercial bus 90 which is preferably a PC-104 type is utilized tointerconnect the CPU 82, Ethernet controllers 84 and 86, and card reader88 as shown.

During operation, the trusted software in the CPU 82 preferably runs inthe protected mode allowing use of the memory and I/O protectionprovided by the 486 CPU. The software is partitioned into threeindependent tasks including the host side of the communications stack,network side of the communications stack and trusted security software.The two communications stacks are untrusted and limited by the 486memory protection mechanisms to access each stacks memory partitions andI/O space of one of the Ethernet controllers 84 and 86. The untrustedcode is able to access the untrusted code itself, a stack and scratchpad area, and a memory partition shared with trusted stacks. Theuntrusted code cannot access or change any memory other than thesepartitions. Thus, the shared memory partitions provide communicationsbetween the trusted and untrusted tasks.

By using the memory management of the CPU 82 to provide isolated memoryenclaves, the amount of trusted code in the SNIU 78 is reduced. Inaddition, this enables commercial untrusted code to be utilized for boththe communications stack and Ethernet controllers 84,86. The SNIU 78 canbe configured to utilize either Ethernet controller 84 or 86 withoutchanging any of the trusted code since all the network code isuntrusted.

As previously described, the SNIU includes a card reader 88 adapted toreceive a Fortezza card, which is utilized to perform integrity andauthenticating functions. The integrity function is performed byencrypting data or messages leaving the SNIU 78 and decrypting data ormessages received by the SNIU 78. The authentication function isperformed by utilizing digital signatures. The Fortezza card includes aprivate key that writes a unique digital signature on all the outgoingmessages of the SNIU 78, and a public key for reading the digitalsignatures included in messages from other SNIU devices. By utilizingdigital signatures unique to each SNIU device, each SNIU is able toidentify which other SNIU sent the message. This enables the SNIUs toauthenticate that the message is coming from another SNIU which is asecure source and further enables it to determine which particular SNIUsent the message.

Referring to FIG. 4, there is shown a block diagram of the hardware SNIUinterfacing with a host computer. The SNIU includes trusted software 44that interfaces with the communications stack of the host computer 58through the network (i.e. Ethernet or token ring) cable 74. The mainmodules of the SNIU include a Host/Network Interface 46, Session Manager48, Trusted Computing Base 50, Audit Manager 52, Association Manager 54and Fortezza API 56. The primary data structures included in the SNIUare the Association Table, Sym₋₋ Key Table, Certificate Table, WaitingQueue and Schedule Table. These data structures are described later inthe description of the protocol.

The communications stack of the computer host 58 is a typical OSI modelincluding a physical 72, data link layer 70, network layer 68, transportlayer 66, session layer 64, presentation layer 62 and application layer60.

Referring to FIG. 5, a data flow diagram for the hardware SNIU is shown.When the host computer communicates with another computer over anetwork, the communications protocol stack within the computer processesthe data to be transmitted.

The Host/Network Interface module 46 is utilized to intercept thepackets of data and convert then back to IP datagrams. The interface 46also processes Address Resolution Protocol (ARP) and Reverse AddressResolution Protocol (RARP) messages and must coordinate the SNIU's twohost/network interface ports hardware addresses with IP addresses ofhost computers on the other side of the SNIU.

When the untrusted Host/Network Interface 46 completes re-assembling anIP datagram from a host computer, the datagram is passed to the TrustedComputing Base 50 (TCB) of the SNIU for processing. The TCB 50 is thecollection of hardware and software which can be trusted to enforce thesecurity policy. The TCB 50 includes a scheduler module 50A and aMessage Parser 50B. The scheduler 50A controls the hardware whichcontrols access to memory and guarantees that IP datagrams are notpassed directly from the host-side Host/Network Interface module to thenetwork-side Host/Network Interface module 46 or vice versa. Rather,each IP datagram is passed to the SNIU's other trusted software modules(Message Parser 50B, Association Manager 54, Session Manager 48) whichdetermine if the IP datagram is allowed to pass through the SNIU and ifit is to be encrypted/decrypted.

In the software SNIU the hardware is controlled by the host's operatingsystem software and not the SNIU's Scheduler module. Therefore, thesoftware embodiment is not as trust worthy as the hardware one eventhough most of the software is identical.

The Scheduler 50A is also utilized to control the flow of datagramswithin the SNIU. The scheduler 50A provides timing for incomingdatagrams and temporarily stores these datagrams in a buffer if earlierones are being processed.

The Message Parser 50B is the first module in the TCB which processes anIP datagram received from the host computer. The Message Parser 50Bchecks the Association Table 76 and determines whether or not anassociation already exists for sending the datagram to its destination.If no association exists, the datagram is stored on the Waiting Queueand the Association Manager 54 is called to establish an associationbetween this SNIU and the SNIU closest to the destination host. If anassociation does exist, the Session Manager 48 is called to encrypt thedatagram, and send the encrypted Protected User Datagram (PUD) to thepeer SNIU.

When the Association Manager 54 is called, it prepares two messages toinitiate the association establishment process. The first message is anAssociation Request Message which contains the originating host computersecurity level and this SNIU's certificate (containing it's publicsignature key) . This message is passed to the Fortezza API 56 whichcontrols the Fortezza card which signs the message with this SNIU'sprivate signature key. The second message is a message designed toinvoke a response from a destination computer (i.e. ping message) whichwill be returned to this SNIU if it is received by the destination host.Both messages are passed to the network-side Host/Network InterfaceModule 46 to be transmitted to the destination host.

When a SNIU receives messages, the messages are first processed by theSNIU's receiving port's Host/Network Interface 46 which reassembles themessages and passes them to the trusted software. The Message Parsermodule 50B passes the Association Request Message to the AssociationManager 54 module and deletes the message designed to invoke a responsefrom the destination computer. The Association Manager 54 passes themessage to the Fortezza API 56 which verifies the digital signature. Ifnot valid, the Audit Manager 52 is called to generate an Audit EventMessage to log the error. If the signature is valid, the AssociationManager 54 saves a copy of the received Association Request Message inthe Waiting Queue, adds this SNIU's certificate to the message, callsthe Fortezza API 56 to sign the message, generates a new messagedesigned to invoke a response from a destination host computer, andpasses both messages to the Host/Network Interface module 46 to transmitthe messages to the destination host. If the messages are received byany other SNIU's before reaching the destination host, this process isrepeated by each SNIU.

If the destination host computer does not contain the Companion SNIUsoftware, the host's communications protocol stack softwareautomatically converts the message designed to invoke a response from adestination computer, to that reply invoked my the massage, for example,an ICMP Echo Reply, and returns it to the SNIU which sent it. However,the destination host does not contain any software which can process theAssociation Request Message; so it is ignored (i.e., deleted).

If the destination host computer does contain Companion SNIU software,the host's data link layer software converts the stream of bits from thephysical layer into packets which are passed to the Companion'sHost/Network Interface module 46. The message designed to invoke aresponse from a destination computer is ignored; and the AssociationRequest Message is passed to the Fortezza API 56 to have the signatureverified.

Whether performed by the last Guard SNIU or Companion located within thedestination host, the hardware address headers are stripped off of thepackets and saved; and the packets are re-assembled into IP datagramswhich are passed to the Message Parser 50B. The message is passed to theAssociation Manager module 54 which saves the originating host and SNIUdata and generates an Association Grant Message. This message containsthe SNIU's IP address (which is the same as the destination host's), theSNIU's certificate, the host's security level, and sealer keys for theoriginating SNIU and the previous intermediate SNIU (if there was one).The sealer keys (a.k.a. Message Encryption Keys) are explainedelsewhere.

The Fortezza API 56 is then called to sign the message which is passedto the Host/Network Interface module 46. The Association Grant Messageis converted from an IP datagram to network packets and passed back tothe host's hardware packet drivers for transmission back to theoriginating host.

Any intermediate SNIU's which receive the Association Grant Messageprocess the message utilizing the Message Parser SOB. The signature onthe message is verified by the Fortezza API 56 and audited via the AuditManager 52 if not valid. Otherwise, the validated message is processedby the Association Manager 54 module which removes and saves one of thesealer keys (a.k.a. a release key) which will be used by this SNIU andthe previous SNIU (which generated the key) to authenticate PUD messagesexchanged via this association in the future. The Fortezza API 56 iscalled to generate and wrap another sealer key to be shared with thenext SNIU in the association path. The new key and this SNIU'scertificate are appended to the message. The Fortezza API 56 aligns themessage. The Host/Network Interface 46 transmits the message on its wayback to the originating SNIU.

The originating SNIU re-assembles the Association Grant Message aspreviously described. The signature is validated and audited ifnecessary. If valid, the Association Manager 56 uses the Fortezza API tounwrap the sealer key(s). If two keys are in the received message, thebottom key is a release key to be shared with the first intermediateSNIU; and the top key is an association key to be shared with the peerSNIU (which granted the association). If there is only one key, it isthe association key which is shared with the peer SNIU; and theassociation path does not contain any intermediate SNIUs. Once the keysare stored and the Association Table 76 is updated, the association isestablished and the Session Manager 48 is called to transmit theoriginal user datagram which was stored in the waiting Queue prior toissuing the Association Request Message.

The Session Manager 48 enforces the security policy, determines whetherIP datagrams received from host computers can be transmitted via thenetwork to their destination host, encapsulates these user datagrams inPUDs using the sealer keys for the appropriate association.

The security policy is enforced by comparing the security levels of thehost and destination. If the security level of the destination isgreater or equal to the security level of the host, the Session Managerchecks the Association Table and identified the appropriate peer SNIUand sealer key(s). The user datagram is encrypted by the Fortezza API 56using the association key. If the association contains any intermediateSNIUs, the Fortezza API 56 calculates a message authorization code usingthe release key. The Session Manager 48 creates a PUD addressed fromthis SNIU to the peer SNIU, encloses the encrypted user datagram,appends the message authorization code (if any), and passes the newdatagram to the Host/Network Interface module 46 on the network-side ofthe SNIU. The datagram is broken into packets and transmitted aspreviously described.

If an intermediate SNIU receives the PUD, the re-assembled datagram ispassed to the Session Manager 48. The source IP address is to identifythe release key which is shared with the previous SNIU. The Fortezza API56 uses the release key to verify the message authorization code. If notvalid, the Session Manager 48 deletes the datagram and calls the AuditManager 52 to generate an Audit Event Message. If the code is valid, itremoves the code from the datagram, and uses the destination IP addressto identify the release key shared with the next SNIU. The Fortezza API56 generates a new message authorization code. The Session Manager 48appends the new code and passes the datagram to the opposite port's HostNetwork Interface module.

When the peer SNIU (i.e., the destination IP address) receives the PUDand it has been reassembled into a datagram, the Message Parser 50Bpasses the datagram to the Session Manager 48. The source IP address isused to identify the corresponding association key. The Fortezza API 56decrypts the original user datagram. The Session Manager checks themessage authorization code and the security levels of the source anddestination hosts. If the code is valid (i.e., the message was notmodified during transmission over the network) and the security policywill not be violated (i.e. the security level of the receiving party atleast matches that of the sending party), the decrypted datagram ispassed to the Host/Network Interface 46 to be released to thedestination host. If either is not correct, the Audit Manager 52 iscalled.

In a preferred embodiment, MAC security policies are primarily performedat the host SNIU, while DAC security policies are primarily performed atthe destination SNIU.

The following is a discussion of the protocol which applies to both thehardware and software SNIUs.

Associations

To establish trust between pairs of SNIUs, within an Internet protocol(IP) based network, the present SNIU uses associations. An associationis a sharing of trusted information developed within the SNIU on an asneeded basis. The SNIU discovers the trusted information it needs, whenit needs it. There is no need for pre-positioned network configurationdata. The SNIU uses custom messages and existing protocols to determinethe existence of other SNIUs and hosts, and maintains that information,each called an association, as long as it is needed and unchanged. TheSNIUs establish an association which provides a trusted communicationspath for a period of variable duration between the SNIUs. While anassociation is open, the two SNIUs use the association's securityparameters to make security decisions for each Internet protocol (IP)packet of information exchanged.

When a host behind a SNIU attempts to communicate with someone else overthe network, the SNIU transmits an Association Request Message and amessage intended to evoke a response from a destination which is not aSNIU according to the present invention ("Ping" message), to thedestination. This Ping may be an ICMP echo request message, for example.It is understood that any references to an ICMP message herein refer,more generally, to any "Ping" message intended to evoke a response fromthe destination. The Association Request Message is used to identifyother SNIUs in the communications path.

Each SNIU which receives the Association request message authenticatesthe message, sends it and a new Ping on to the destination. The SNIUwhich receives the Reply message to the Ping is the terminating SNIU(i.e., closest to the destination) in the potential association'scommunications path. This SNIU determines if the association should bepermitted, i.e., would not violate the global or local security policy.The terminating SNIU creates an Association Grant Message, inserts itssecurity parameters, and sends it back to the originating SNIU. When theoriginating SNIU receives the Association Grant Message, itauthenticates the message.

Address Resolution Messages

Address Resolution Protocol (ARP) allows a host to find the hardwareaddress of another host on the same network, given its IP address. Thehost broadcasts an ARP Request message which contains its hardware andIP addresses and the IP address of the target host. The target host (oran intermediate gateway) returns to the requesting host an ARP Responsemessage which contains the hardware address of the target host (or thegateway). Reverse Address Resolution Protocol (RARP) allows a host whichonly knows its hardware address to obtain an IP address from thenetwork. The host broadcasts a RARP Request which contains its hardwareaddress and a server on the network, returns a RARP Response containingan IP address assigned to the requester=s hardware address. All ARP andRARP messages have the same format and are contained within the framedata area of a single Ethernet frame (they are not IP datagrams).According to Douglas E. Comer, the format is as follows: ##STR1## where:HARDWARE TYPE is set to 0001 hex to indicate Ethernet

PROTOCOL TYPE is set to 0800 hex to indicate IP addresses

HLEN (hardware address length) is set to 06 hex bytes

PLEN (protocol address length) is set to 04 hex bytes

    ______________________________________                                        OPERATION is set to                                                                         0001 hex for an ARP Request message                                           0002 hex for an ARP Response message                                          0003 hex for a RARP Request message                                           0004 hex for a RARP Response message                            ______________________________________                                    

SENDER'S HA contains the sender's 48 bit Ethernet hardware address

SENDER'S IP contains the sender's 32 bit IP address

TARGET'S HA contains the target's 48 bit Ethernet hardware address

TARGET'S IP contains the target's 32 bit IP address

When a host broadcasts a request message, it fills in all of the dataand the target's hardware address field is set to 000000 hex if an ARP,or the sender's and target's IP address fields are set to 0000 hex if aRARP. When the target machine responds, it fills in the missing addressand changes the operation field to indicate a response message. Duringan ARP, the target machine swaps the sender's and target's addresses sothat the sender's address fields contains its addresses and the target'saddress fields contains the original requesting host's addresses. Duringa RARP, the server stores its addresses in the sender's address fieldsand returns the response to the original sender's hardware address.

WHEN A SNIU RECEIVES A MESSAGE, IT PERFORMS THE FOLLOWING PROCESSES

ARP Request: If an ARP Request message is received on a SNIU 's port A,the untrusted software in port A's memory segment determines if thesender's IP address is in port A's ARP cache. If not, it creates a newentry in the ARP cache and inserts the sender's hardware and IPaddresses. Otherwise, the sender's hardware address is copied into theentry (overwriting any previous address); and packets (if any) waitingto be sent to the sender's IP address are transmitted. If the target'sIP address is in port A's address list (i.e., a list of IP addresseswhich are reachable from port B), the untrusted software returns an ARPResponse message swapping the SENDER'S and TARGET 'S addresses andinserting port A's Ethernet hardware address into the SENDER'S HA field.In either case, the untrusted software passes the ARP Request to theTrusted Computing Base (TCB).

The TCB checks port B's address list for the SENDER'S IP. If theSENDER'S IP is not in port B's address list, the TCB determines whetherthe SENDER'S IP is releasable to port B; and if releasable, inserts itinto port B's address list. Secondly, the TCB determines whether a proxyARP Request should be broadcast from port B. If an ARP Response messagewas not returned by port A, and the target's IP address is not in portA's ARP cache, and the sender's IP is releasable to port B. The TCBcreates a proxy ARP Request Message The TCB inserts port B's hardwareand IP addresses in the SENDER'S address fields, copies the target's IPaddress from the original ARP Request into the TARGETS IP field, andsignals port B's untrusted software to broadcast the message. Each timethe TCB releases a proxy ARP Request, it creates an Anticipated Messagein the form of a proxy ARP Response message which contains the originalsender's addresses in the TARGETS fields, the target's IP address in theSENDER'S IP field, and port A's hardware address in the SENDER'S HAfield. This message is saved in the Anticipated Message list for port Aand will be released to port A's untrusted software for transmission ifthe anticipated ARP Response message is received on port B. Note thatreleasability may involve the TCB modulating ARP Requests from a highnetwork to a low network in order to not exceed the 100 bits per secondcovert channel bandwidth requirement.

ARP Response: If an ARP Response message is received on a SNIU's port A,the untrusted software in port A's memory segment determines if thesender's IP address is in port A's ARP cache. If not, it creates a newentry in the ARP cache and inserts the sender's hardware and IPaddresses. Otherwise, the sender's hardware address is copied into theentry (overwriting any previous address); and packets (if any) waitingto be sent to the sender 's IP address are transmitted. Finally, theuntrusted software passes the ARP Response to the TCB.

The TCB checks port B's address list for the SENDER'S IP. If theSENDER'S IP is not in port B's address list, the TCB determines whetherthe SENDER'S IP is releasable to port B; and if releasable, inserts itinto port B's address list. Secondly, the TCB checks the AnticipatedMessage list for port B and determines whether the ARP Response was dueto a proxy ARP Request made for a request originally received on port B.If the SENDER'S IP matches an entry in the Anticipated Message list andthe message is releasable to port B. The TCB signals port B's untrustedsoftware to create a proxy ARP Response message identical to theAnticipated Message, and removes the message from the AnticipatedMessage list for port B.

RARP Request: If a RARP Request message is received on a SNIU's port A,the untrusted software in port A's memory segment checks a flag todetermine if the SNIU was initialized to act as a RARP server for thenetwork attached to port A. If not, the received message is ignored.Otherwise, the untrusted software passes the RARP Request to the TCB.

The TCB determines whether the RARP Request can be released to port B.If releasable, it creates a proxy RARP Request message copying theTARGET=S HA from the received message and inserting port B's addressesin the SENDER'S HA and IP fields, passes the proxy RARP Request messageto port B's untrusted software for broadcast, and creates an Anticipatedmessage in the form of a proxy RARP Response message. The TCB copies theoriginal TARGET'S HA, inserts port A's hardware address in the SENDER'SHA, and saves it in the Anticipated Message list for port A

RARP Response: If a RARP Response message is received on a SNIU's portA, the untrusted software in port A's memory segment determines if thesender's IP address is in port A's ARP cache. If not, it creates a newentry in the ARP cache and inserts the sender's hardware and IPaddresses. Otherwise, the sender's hardware address is copied into theentry (overwriting any previous address); and packets (if any) waitingto be sent to the sender's IP address are transmitted. Finally, theuntrusted software inserts the TARGETS IP into port A's address list andpasses the RARP Response to the TCB.

The TCB checks port B's address list for the SENDER'S IP. If theSENDER'S IP is not in port B's address list, the TCB determines whetherthe SENDER'S IP is releasable to port B; and if releasable, inserts itinto port B's address list. Secondly, the TCB determines whether theTARGET'S IP is releasable to port B. If releasable, the TCB creates anew entry in port B's ARP cache and inserts the TARGETS HA and IP. TheTCB uses the TARGETS HA to find the appropriate proxy RARP Responsemessage in port B's Anticipated Message List and copies the TARGETS IPand SENDER'S IP into the Anticipated message signals port B's untrustedsoftware to create a proxy RARP Response message identical to theAnticipated Message and removes the message from the Anticipated Messagelist for port B.

Trusted Session Protocol

Dragonfly units (e.g., SNIUs and Companions) establish associations inorder to authenticate each other, exchange security parameters, andestablish a trusted session for communication Dragonfly uses acombination of custom messages and standard ICMP Echo Request and EchoReply messages to identify Dragonfly units between source anddestination hosts on a network and establish a trusted communicationspath. Once the path and an association between two SNIUs has beenestablished, user datagrams are encapsulated in custom Dragonflymessages called Protected User Datagrams for secure transmission betweenthe two SNIUs. This collection of messages to establish and utilizeassociations is referred to as the Dragonfly Trusted Session Protocol(TSP).

When a host behind a SNIU attempts to communicate with someone else overthe network, the SNIU stores the datagram from the host in a WaitingQueue and transmits an Association Request Message and an ICMP EchoRequest to the intended destination. The Association Request Message isused to identify other Dragonfly units in the communications path and tocarry the originating SNIU's security parameters. The SNIU inserts theoriginating host's security level, appends its certificate, and signsthe message. The Message designed to invoke a response from adestination computer contains a flag which indicates that it came from aSNIU. This message is referred to as a Dragonfly Ping Message.

Each Dragonfly unit which receives the Association Request Messageauthenticates the message, saves a copy of the message, appends itscertificate, signs the message, sends it on to the destination, andsends a new Dragonfly Ping Message to the destination. When a SNIUreceives a Dragonfly Ping Message from another SNIU, the message isdiscarded and not passed through to the destination. When a destinationhost receives an Association Request Message, it does not recognize theDragonfly custom protocol; so it discards the message. However, thedestination host does recognize the Dragonfly Ping Message as an Messagedesigned to invoke a response from a destination computer; so it returnsan Reply message to the message designed to invoke a response .Therefore, a SNIU only receives an ICMP Echo Reply if and only if noother SNIU exists between the SNIU which sent the Dragonfly Ping Message(an ICMP Echo Request) and the destination host.

The SNIU which receives the Reply message to the message designed toinvoke a response is the terminating SNIU (i.e., closest to thedestination) in the potential association's communications path. ThisSNIU determines if the association should be permitted (i.e., would notviolate the security policy). If permitted, the SNIU grants theassociation, generates an encryption key for the association, andencrypts the key using the originating SNIU's public key (from itscertificate). If the saved copy of the Association Request Messagecontained an intermediate SNIU's certificate, the SNIU also generates arelease key and encrypts it using the intermediate SNIU's public key.The terminating SNIU creates an Association Grant Message, stores theencrypted key(s), inserts the destination host's security level, appendsits certificate, signs the message, and sends it onto the originatingSNIU. Each intermediate SNIU (if any exist) which receives theAssociation Grant Message authenticates the previous SNIU's signature,extracts the release key, generates a new release key for the next SNIU,encrypts the key using the public key (from the certificate in the savedcopy of the Association Request message) of the next SNIU, removes theprevious intermediate SNIU's certificate and is signature, appends itsown certificate and signature, and sends the message on the return path.When the originating SNIU receives the Association Grant Message itauthenticates the message and extracts the key(s).

Once association is granted, the originating SNIU fetches theoriginating host's datagram from the Waiting Queue and prepares to sendit to the terminating SNIU in the newly established association. TheSNIU uses the association key to encrypt the datagram for privacy andstore it and the encryption residue into a new datagram from theoriginating SNIU to the terminating SNIU. If the association containsintermediate SNIUs, the originating SNIU uses the release key tocalculate a second encryption residue and appends it to the datagram.Finally, the SNIU transmits the protected user datagram to the peer SNIUin the association.

When the protected user datagram is received by an intermediate SNIU (ifany in the path), the intermediate SNIU fetches the release keycorresponding to the previous SNIU and uses the release key to validatethe datagram. If valid, the SNIU removes the release key residue fromthe datagram and checks to determine whether there are more intermediateSNIUs in the path before reaching the terminating SNIU. If anotherintermediate SNIU exists, the release key corresponding to the nextintermediate SNIU is used to calculate a new release residue which isappended to the datagram. In either case, the datagram is sent on itsway out the opposite the opposite port from which it was received.

When the terminating SNIU receives the protected user datagram, it usesthe association key corresponding to the originating SNIU to decrypt andvalidate the datagram. If the source and destination hosts are at thesame security level (i.e., a write-equal situation), the decrypteddatagram is sent out the opposite port to the destination host. If thesource host has a lower security level than the destination (i.e., awrite-up situation), the SNIU predicts the response from the destinationand saves it before sending the decrypted datagram to the destinationhost. If the source host has a higher security level than thedestination (i.e., a write-down situation), the received datagram (i.e.,a response to a previous datagram from the lower level host) waspredicted by the SNIU which sent the protected datagram. Therefore, thisSNIU is assured that the IC) classification of the received datagram isdominated by the lower level destination host; so the datagram isreleased to the destination. If a SNIU receives a user datagram from anative host which would be a write-down to the destination host and nopredicted datagram is found, the received datagram is erased and theattempted write down is audited.

Message Processing Tables

There are three tables which are used to process in-coming and out-goingmessages; the Association Table, the Symmetric Key Table (Sym₋₋ Key),and the Certificate Table. Each SNIU has two Association tables one foreach port. Each entry contains data corresponding to a particular sourceor destination address. The Sym₋₋ Key table contains data correspondingto a particular message encryption key (MEK) which could be used as arelease key or an association key. The Certificate table containsrecently received certificates from other SNIUs.

Each table consists of a linked list of tokens in which the data for anentry in the table is stored in a token. The tokens for each table havea unique data structure and are linked together in `free` lists duringinitialization. When a new entry is made in one of the tables, a tokenis removed from the free list for that table's tokens, the data for thenew entry is inserted in the appropriate fields of the token, and thetoken is linked at the top of the table. When an entry is removed from atable, the `previous` and `next` tokens are linked, the data fields inthe token are cleared, and the token is linked at the bottom of theappropriate free list. Whenever the data in an entry is used, the tokenis removed from the table and relinked at the top of the table. In thisway, the oldest (i.e., least used) entry is at the bottom of the table.If a new entry is needed and the free list is empty, the bottom token isremoved from the table, the data fields are cleared, the new entry'sdata is inserted, and the token is linked at the top of the table. Inaddition, when a SNIU removes the bottom (oldest, unused) token in theSym₋₋ Key Table, it also removes every token in the Association Tablewhich pointed to the removed key. A SNIU does not terminate anassociation when a certificate, key, or Association Table entry isremoved because many valid entries using the same association couldstill exist.

A token for the Association Table has the following data structure:##STR2## where: NEXT is a pointer to the next token in the table or list

PREVIOUS is a pointer to the previous token in the table or list

IP ADDRESS is the IP address of the source/destination

PEER SNIU IP ADDRESS is the address of the other terminating SNIU forthe association

ASSOCIATION KEY POINTER points to the association MEK in the Sym₋₋ Keytable

RELEASE KEY POINTER points to the release MEK in the

    ______________________________________                                        Sym.sub.-- Key table                                                          ______________________________________                                        ASSOC-TYPE is set to                                                                          0001 hex for "pending"                                                        0002 hex for "host" (i.e., the                                                entry is for a host                                                           destination)                                                                  0003 hex for "SNIU" (i.e., the                                                entry is for a SNIU                                                           destination)                                                                  0004 hex for "native host"                                                    (i.e., no peer SNIU)                                                          0005 hex for "audit catcher"                                  RELKEY-TYPE is set to                                                                         0001 hex for "in" (i.e., use to                                               validate release key residue)                                                 0002 hex for "out" (i.e., use to                                              add release key residue)                                                      0003 hex for "both"                                           SECURITY-LEVEL indicates the security level of the                            source/destination                                                            AC-CLIENT indicates if the source/destination is an audit                     catcher client                                                                ______________________________________                                         ##STR3##     where: NEXT is a pointer to the next token in the table or list

PREVIOUS is a pointer to the previous token in the table of list

DISTINGUISHED NAME is the 128 byte name in certificate from the otherSNIU using this key

MEK is the 12 byte wrapped key (association or release) shared with theanother SNIU

IV is the 24 byte initialization vector associated with the MEK

CERTIFICATE POINTER points to the other SNIU's certificate in theCertificate table

INDEX is a Fortezza card key register index which indicates if and wherethe key is loaded (1-9 are valid key register indexes, 0 indicate thatthe key is not loaded on the Fortezza)

SPARE is an unused byte to keep addressing on 32-bit boundary, where:

NEXT is a pointer to the next token in the table or list

PREVIOUS is a pointer to the previous token in the table or list

DISTINGUISHED NAME is the 128 byte name in certificate from the otherSNIU using this key

MEK is the 12 byte wrapped key (association or release) shared with theanother SNIU

IV is the 24 byte initialization vector associated with the MEK

CERTIFICATE POINTER points the other SNIU's certificate in theCertificate table

INDEX is a Fortezza card key register index which indicates if and wherethe key is loaded (1-9 are valid key register indexes, 0 indicate thatthe key is not loaded on the Fortezza)

SPARE is an unused byte to keep addressing on 32-bit boundary

Dragonfly Message Flag

Any message (IP datagram) which is generated or modified by a Dragonflyunit contains a Dragonfly Message Flag in the last four bytes of thedatagram. The first byte is the message type field; the second byte isthe message format field; and the third and fourth bytes are theDragonfly Flag. Note that all Dragonfly message types are signed exceptfor Dragonfly Ping and Protected User Datagram (PUD) Messages. Note thata PUD uses MEK residues for integrity and authentication.

    ______________________________________                                        Message Type: 51.    Audit Event                                                            52.    Audit Catcher List                                                     53.    Audit Catcher Check-In                                                 54.    Audit Mask                                                             55.    Host Unknown                                                           56.    Association Request                                                    57.    Association Grant                                                      58.    Association Denial (currently                                                 not implemented)                                                       59.    Association Unknown                                                    60.    Protected User Datagram                                                61.    Receipt                                                                62.    Certificate Revocation List                                            63.    Dragonfly Ping                                                         64.    SNIU Initialization                                                    65.    Association Established                                                66.    Release Key Unknown                                      Message Format:                                                                             46.    Signed Type I (source SNIU's                                                  certificate and signature)                                             47.    Signed Type 2 (source and                                                     intermediate SNIU's certificates                                              and signature)                                                         48.    PUD Type I (Association MEK                                                   residue)                                                               PUD    Type 2 (Association MEK and                                                    Release MEK residues)                                   ______________________________________                                         Dragonfly Flag: dfdf hex                                                 

Waiting Queue and Schedule Table

The Waiting Queue is used to store IP datagrams for potential futureprocessing based upon some anticipated vent. For every entry made in theWaiting Queue, a corresponding entry is made in the Schedule Table. TheSchedule Table is used to automatically process entries in the WaitingQueue if they have not been processed within some pre-determined amountof time (i.e., the anticipated event does not occur). The Schedule Tableentry contains a time-out field (which is set to the current time plussome reasonable delta representing the maximum waiting period) and afunction pointer (which indicates which subroutine should be called iftime expires before the Waiting Queue entry is processed) . The ScheduleTable is checked in the main executive loop of the TCB; expired entriesare removed; and the corresponding datagrams in the Waiting Queue areprocessed by the designated subroutine.

For example, when a SNIU receives a user datagram from a native hostwhich is destined for another host for which there is no existingassociation, the SNIU stores the user datagram in the Waiting Queue andtransmits an Association Request Message. When the Association GrantMessage is received, the user datagram is removed from the WaitingQueue, the corresponding Schedule Table entry is deleted, and the userdatagram is encrypted and sent to the peer SNIU of the association. Ifan Association Grant Message is never received, the Schedule Table entryexpires which calls a subroutine to delete the user datagram from theWaiting Queue.

Another example is when SNIU sends an Audit Event Message to an AuditCatcher. The transmitted datagram is stored in the Waiting Queue. Whenthe Receipt Message is received from the Audit Catcher, the originalAudit Event datagram is removed from the Waiting Queue and thecorresponding Schedule Table entry is deleted. If the Schedule Tableentry expires, the designated subroutine is called which re-transmitsthe Audit Event Message stored in the Waiting Queue and a new entry ismade in the Schedule Table.

Generating and Exchanging MEKs

Message Encryption Keys (MEKs) are generated during the associationestablishment process (previously) described) and are exchanged via theAssociation Grant Message. When a SNIU generates an MEK itsimultaneously generates an initialization vector (IV).

When a SNIU exchanges an MEK with another SNIU, it generates a randomnumber, RA, which is required to encrypt (I. e., wrap) the MEK. The keyexchange algorithm is designed so that only the sending and receivingSNIUs can decrypt the MEK and use it. The sender wraps the MEK fortransmission using the destination's public key, RA, RB (which is alwaysset=1), and the sender's private key. IVS which were generated withrelease keys are transmitted in the clear with the wrapped MEK in theAssociation Grant Message. IVS which were generated with associationkeys are ignored. The recipient unwraps the key using its private key,RA, RB, and the sending SNIU's public key. Once unwrapped, the safeexchange is complete.

Each SNIU re-wraps the MEK using its storage key (Ks), stores the MEKand the IV (if the MEK is a release key) in the Sym₋₋ Key Table, storesthe pointer to the MEK in the Association Table and stores theDistinguished Name (of the other SNIU sharing this MEK) in the Sym₋₋ KeyTable entry.

Using MEKs and IVS

Message Encryption Keys (MEKs) are used as association and release keysto provide confidentiality. integrity and authentication of userdatagrams during an association between two SNIUs. IVS are used toinitialize the feedback loop in the Skipjack encryption algorithm formost modes of operation. Encrypting identical data using the same MEK,but different IVS, will produce different ciphertext. In fact, theFortezza card requires the user to generate a new IV for each encryptionevent in order to assure that each message looks different whenencrypted.

When a SNIU encrypts a user datagram it first generates a new IV for theassociation key, encrypts the datagram, appends the encryption residuefor integrity and authentication purposes, and appends the new IV. Ifthe association involves intermediate SNIUs, the SNIU does a secondencryption operation (on the new ciphertext, residue, and IV) using therelease key and release key IV. The release key IV is never changedsince the encrypted data is always guaranteed to be unique even if theoriginal datagram was not. The release key residue is appended to theprotected user datagram. The completed protected user datagram istransmitted.

Received Message Processing

When a SNIU receives an IP datagram it checks the destination address inthe header and determines if it is the intended recipient. Then, itchecks the last four bytes of the IP datagram for the Dragonfly MessageFlag and determines the type and format of the received message.

Destination SNIU Message Processing

When a SNIU receives an IP datagram which is addressed to it, themessage should be one of the following types of Dragonfly formattedmessages. If it is not, the SNIU will audit the event. The onlyexceptions are Message designed to invoke a response from a destinationcomputers which are processed by the receiving port's untrusted softwareand not passed to the trusted computing base.

51. Audit Event: If the SNIU is not configured to be an Audit catcher,it will audit the event sending the source IP address of the, receivedmessage to its primary Audit Catcher. If the SNIU is configured to be anAudit Catcher, it verifies the signature on the message, increments itsreceived audit event sequence number, generates a time-stamp, and printsthe sequence number, time-stamp, source IP address, and ASCII characterstring from the message. Once the event has been recorded, the AuditCatcher SNIU generates a Receipt Message (copies the audit event counterfrom the received message and inserts it in the message number field).and sends it.

52. Audit Catcher List: The SNIU verifies the signature on the message,stores the new list of Audit Catchers in the Configuration Table,generates a SNIU Initialization Message, generates a Receipt Message,and updates the Audit Catcher Check-In Message stored in the WaitingQueue.

53. Audit Catcher Check-In: If the SNIU is not configured to be an AuditCatcher, it will audit the event sending the source IP address of thereceived message to its primary Audit Catcher. If the SNIU is configuredto be an Audit Catcher, it verifies the signature on the message,generates a time-stamp, prints the time-stamp and source IP address, andcompares the audit mask in the received message with the current mask.If they do not match, the current audit mask is sent to the SNIU whichjust checked-in. Note that the period between check-ins is a parameterin each SNIU's configuration data. The audit catcher does not return aReceipt Message in any case.

54. Audit Mask: The SNIU verifies the signature on the message, storesthe new audit mask in the Configuration Table and the Audit CatcherCheck-In Message stored in the Waiting Queue, generates a ReceiptMessage, and audits the event (in case someone else other than the AuditCatcher is distributing new audit masks).

55. Host Unknown: When a SNIU receives a valid Protected User Datagram,but cannot find the destination's Association Table entry, it sends aHost Unknown Message back to the originating SNIU and audits the event.The originating SNIU verifies the signature on the received Host UnknownMessage, extracts the original destination host's IP, removes the host'sentry from its Association Table and audits the event it does not removethe peer SNIU's entry nor entries from the Sym₋₋ Key Table as they mightbe supporting other associations.

56. Association Request: This message should only be sent to nativehosts and intercepted by SNIUs; but a SNIU should never be thedestination.

57. Association Grant: The SNIU verifies the signature in the datagramand updates the receiving port's Association Table entries for the peerSNIU and host destination. The SNIU determines if an entry exists forthe peer SNIU. If not the SNIU creates a new entry for the peer SNIU andmarks the association type as `SNIU`. In either case, the SNIU extractsand unwraps the association MEK (and release MEK if needed), stores there-wrapped key(s) in the Sym₋₋ Key Table (being careful to over-writethe old keys without changing the pointers to the keys if some alreadyexisted), and marks the release key type as `out` (if a release keyexists).

If the received message indicates that existing release keys are to beused, the SNIU searches the Association Table for `SNIU` type entriesand checks the DN of each Sym₋₋ Key Table entry identified via therelease key pointer. The SNIU compares that DN with the DN in the bottomcertificate in the received message. If a match is found, the releasekey pointer is copied to the Association Table entry for the peer SNIUof this new association. If no match can be found, the SNIU generates aRelease Key Unknown Message. This message is generated by modifying thereceived Association Grant Message. The destination address (its IP) isswapped with the peer SNIU's address (i.e., the association grantingSNIU's IP in the data section of the datagram. The previous SNIU'scertificate is replaced with this SNIU's certificate so the previousSNIU can wrap the new release key and return to this SNIU in theAssociation Grant Message. The signature at the bottom is removed. TheMessage number is changed from 58 to 66. The new message is signed andsent back to the previous SNIU in the path. Finally, the associationtype field of the peer SNIU's entry in the Association Table is changedback to `pending`. If a Release Key Unknown Message is transmitted, theSNIU waits for the new release key in another Association Grant messagebefore continuing.

If the peer SNIU's Association Table entry is complete, the SNIU findsthe entry for the destination host, changes the association type from`pending` to `host`, inserts the peer SNIU's IP copies the associationand release key pointers and release key type from the peer SNIU'sentry, and copies the destination host's security level from thereceived message.

Once the receiving port's Association Table has been updated, the SNIUfinds the original host's user datagram in the Waiting Queue, removesthe corresponding entry from the Schedule Table, and compares the sourceand destination security levels to determine it the user datagram can besent to the destination. If the source's security level is dominated by(i.e., less than or equal to) the destination's security level, the SNIUcreates a Protected User Datagram (PUD). The SNIU sets the destinationto the peer SNIU's IP, sets the protocol type to indicate a DragonflyMessage, uses the association key to encrypt the entire receiveddatagram and prefixed source host's security level, inserts theciphertext and IV, appends the association residue, generates andinserts a release residue (if the destination host's Association Tableentry contains a pointer to a release key), appends the appropriateDragonfly Message Flag, and sends the datagram. If the source host isnot dominated by the destination (i.e., a potential write-down), theattempted write-down is audited. This procedure is repeated for eachentry in the Waiting Queue which is intended for the same destination.

58. Association Denial: (currently not implemented)

59. Association Unknown: A SNIU sends an Association Unknown Message(and generates audit notices) when a Protected User Datagram orAssociation Exists message is received and a corresponding AssociationTable entry does not exist. The message is sent back to the source SNIUand contains the destination SNIU's IP address. When a SNIU receives anAssociation Unknown Message, it deletes every entry in the AssociationTable in which the peer SNIU's IP matches the returned destination SNIUIP. Subsequent user datagrams from the same host sent to the samedestination will initiate an Association Request to re-establish theassociation.

60. Protected User Datagram (PUD): The SNIU uses the source IP to findthe peer SNIU's entry in the receiving port's Association Table andretrieve the association key to decrypt and validate the receiveddatagram. If the decryption residue does not match, the event isaudited. Otherwise, the SNIU uses the destination host's IP to find theappropriate entry in the opposite port=s Association Table, retrievesthe destination host's security level, and compares it to the securitylevel in the received datagram. If a write-up situation, the SNIUgenerates an anticipated message. However, regardless of the relativesecurity levels, the decrypted and validated user datagram is sent tothe destination host.

If the decrypted and validated datagram is a broadcast message, the SNIUcompares the security level of the received datagram and the securitylevel of the opposite port. If the security level of the opposite portdominates that of the datagram, the SNIU releases the datagram Out theopposite port.

If a terminating SNIU receives a PUD and cannot find the peer SNIU'sentry in the Association Table, the SNIU returns an Association UnknownMessage (containing this SNIU's IP) and audits the event. If thereceiving SNIU validates the residue but cannot deliver the userdatagram because it cannot fund the destination host in the AssociationTable, then the SNIU returns a Host Unknown Message (containing thedestination host's IP) to the originating SNIU and audits the event.

61. Receipt: A Receipt Message is sent by an Audit Catcher to a SNIU fora SNIU Initialization or an Audit Event message. The SNIU uses themessage number in the received datagram to locate the saved copy of theoriginal message in the Waiting Queue and remove it and thecorresponding Schedule Table entry. If the original message was a SNIUinitialization Message, the SNIU locates the Association Table entry forthe Audit Catcher and changes the association type from `pending` to`audit catcher`. If time expires in the Schedule Table entry before theReceipt Message is received the SNIU will retransmit the originalMessage. If no receipt is received after TBD attempts, the SNIU willswitch to the next Audit Catcher in its list. If all Audit Catchers areattempted without success, the SNIU will check a configuration parameterto determine whether to continue without audit or halt. SNIUs issueReceipt Messages to the source for Audit Catcher List, Audit Mask, andCertificate Revocation List messages. When the source receives areceipt, it uses the returned message number to remove the copy of themessage from the Waiting Queue and the corresponding Schedule Tableentry. Refer to the section above. "Waiting Queue and Schedule Table",for more details.

62. Certificate Revocation List: If a Certificate Revocation List (CRL)is received the SNIU returns a receipt to the source and checks theSym₋₋ Key Table far any keys which were received from (or sent to)another SNIU with a revoked certificate. For each entry which containsthe Distinguished Name (DN) of a revoked certificate the SNIU deletesthe certificate from the Certificate Table (if it is still there),deletes the Sym₋₋ Key Table entry, and deletes every entry in theAssociation Table which pointed to the key. Note that deleting a tableentry means to unlink the token from the table, clear the token'smemory, and re-link the token in the token=s free list.

63. Dragonfly Ping: This message can only be received by a SNIU which isthe terminating SNIU in an association (i.e., the closest SNIU to thedestination host). This SNIU originally transmitted a Dragonfly PingMessage (in the form of an ICMP Echo Request) along with an AssociationRequest Message to some unknown destination which converted the EchoRequest to an Echo Reply, returned it, and ignored the AssociationRequest Message (which could only be processed by another SNIU).

Upon receiving this message the SNIU checks the originating SNIU IP inthe data section of the received message to determine if it is the onlySNIU in the association (i.e., the only SNIU between the originatinghost and the destination host). If it was the originator, the SNIU usesthe source IP address to find the destination's entry in the AssociationTable, changes the association type from `pending` to `native host`,sets the security level to that port's security level, finds theoriginal host's user datagram in the Waiting Queue, removes thecorresponding entry from the Schedule Table, and compares the source anddestination security levels to determine if the user datagram can besent to the destination. If the comparison indicates a write-upsituation, the SNIU generates and saves an anticipated message andreleases the original datagram to the destination port. If a write-downsituation, the SNIU deletes the datagram and audits the attemptedwrite-down. If a write-equal, the datagram is released to thedestination port. This procedure is repeated for each entry in theWaiting Queue which is intended for the same destination.

If this SNIU was not also the originating SNIU, the originating SNIU'sand originating host's IP addresses in the data section of the receivedEcho Reply are used to identify the peer SNIU's entry in the AssociationTable and fetch the Association Request Message which was saved in theWaiting Queue (and delete the corresponding entry from the ScheduleTable). Then the SNIU creates or updates three Association Tableentries. First, it creates an entry (if it doesn't already exist) in thereceiving port's Association Table for the original destination host(using the source IP from the received datagram header), marks theassociation type as `native host` and stores the receiving port'ssecurity level in the security level field.

Second, it updates the entry in the opposite port's Association Tablefor the peer SNIU. If the peer SNIU's entry is already complete (i.e.,the association type field is marked as `SNIU`), the SNIU verifies thatthe DN in the Sym₋₋ Key Table entry for the association key is stillvalid and returns an Association Exists Message (containing the originaldestination host's IP and security level) instead of an AssociationGrant Message to the peer SNIU. If the DN or the certificate haschanged, the SNIU deletes all entries in the Association Table whichrefer to this entry as the peer SNIU and then continues as if this wasthe first association with this peer SNIU and over-writes the old data.If the peer SNIU entry in the Association Table is incomplete (i.e., theassociation type field is marked as `pending`), the SNIU continues tofill in the missing data as follows. If the release key type is marked`out` or `both`, then the association path contains at least oneintermediate SNIU; therefore, the SNIU must extract the peer SNIU'scertificate from the Association Request Message and store it in theCertificate Table. If a certificate with this DN already exists, but isnot identical, then the SNIU must locate and delete all other Sym₋₋ KeyTable and Association Table entries referencing this certificate. Ineither case, the SNIU stores the pointer to the certificate the DN in aSym₋₋ Key Table entry, and stores the pointer to the Sym₋₋ Key Tableentry in the association key pointer field of the Association Tableentry. If there aren't any intermediate SNIUs, the pointer in therelease key pointer field is copied to the association key pointerfield; and the release key pointer field is cleared. In either case, theassociation type is changed from `pending` to `SNIU`. The SNIU generatesthe association key and stores the key in the Sym₋₋ Key Table entry. Ifa release key is needed for an intermediate SNIU, the SNIU mustdetermine if a release key associated with the intermediate SNIU'scertificate's DN already exists. The SNIU uses the release key pointerin each entry with association type `SNIU` in the Association Table tolocate the Sym₋₋ Key Table entry of every release key. If a match isfound the pointer to that Sym₋₋ Key Table entry is copied. Otherwise, anew release key is generated and stored.

The third Association Table entry is for the originating host. It's IPand security level are in the data portion of the Association RequestMessage. The security level is copied to the entry, the association typeis marked as `host`, and the rest of the data is copied from the peerSNIU entry.

Once the Association Table entries are updated, an Association GrantMessage is generated. The SNIU stores the source address from theAssociation Request Message (i.e., the association originating SNIU'sIP) in the destination address and stores the destination host's IP inthe source address (a little IP spoofing). The SNIU fills in the datasection by storing its IP, the destination host's security level, theassociation key data (wrapped key and RA), and if necessary, the releasekey data (the wrapped key, RA and IV). If a release key for the firstintermediate SNIU on the return path existed previously to establishingthis association, the SNIU sets a flag (instead of storing the releasekey in the message) to instruct the intermediate SNIU to use theexisting release key. The Dragonfly Message Flag is inserted at thebottom marking the type as Association Grant and the format as SignedType I to indicate only one certificate. The message is signed and sent;and the event is audited.

64. SNIU Initialization: This message is sent by a SNIU to it's primaryAudit Catcher during the SNIU's initialization to determine whether theAudit Catcher is ready to support the SNIU. Depending upon aconfiguration parameter, the SNIU may not allow any other messageprocessing until a Receipt Message is received from the Audit Catcher.Upon receiving this message, the Audit Catcher verifies the signature onthe message, makes an entry in its receiving port's Association Tableusing the source IP., marks the association type as `SNIU`, returns aReceipt Message, and compares the audit mask in the received messagewith the current mask. If they do not match, the current audit mask issent to the SNIU in an Audit Mask Message.

65. Association Exists: If a SNIU receives an Association RequestMessage, determines that it is the terminating SNIU, and that it alreadyhas an existing association with the requesting SNIU; the terminatingSNIU will return an Association Exists Message, instead of anAssociation Grant Message.

When a SNIU receives an Association Exists Message, it verifies thesignature on the message and checks the receiving port B AssociationTable for an entry for the source SNIU. If the source (i.e., peer) SNIUentry exists, this SNIU uses the destination host's IP address in themessage to update (or create, if necessary) the destination host'sAssociation Table entry. It changes the association type from `pending`to `host`, copies the MEK pointers from the peer SNIU entry, and copiesthe security level from the received message. Once the Association Tablehas been updated, the SNIU locates the user datagram (which was storedin the Waiting Queue until the association was established) andprocesses the datagram for transmittal the same as if a normalAssociation Grant Message had been received (see description above).

If an entry cannot be found in the Association Table for the sourceSNIU, then this SNIU will return an Association Unknown Message to thesource SNIU. The message will contain this SNIU's IP address to indicatewhich association needs to be deleted. Then the SNIU will locate theoriginal host's datagram saved to the Waiting Queue, reset its time-outvalue in the Schedule Table, and schedule a new event (after some TBDseconds delay) to regenerate a new Association Request Message.

66. Release Key Unknown: A SNIU may receive an Association Grant Messagewith a flag set to indicate that an existing release key should be used.However, if the SNIU cannot locate the release key, it sends a ReleaseUnknown Key Message back to the previous SNIU requesting it to generatea new release key.

This message is generated by modifying the received Association GrantMessage. The destination address (the association originating SNIU's IP)is swapped with the terminating SNIU's address (i.e., the associationgranting SNIU's IP) in the data section of the datagram. The previousSNIU's certificate is replaced with this SNIU=s certificate so theprevious SNIU can wrap the new release key and return it to this SNIU inthe Association Grant Message. The signature at the bottom is removed.The message number is changed from 58 to 66, and the new message issigned and sent back to the previous SNIU in the path.

Note that this message is addressed to the terminating SNIU whichgenerated the original Association Grant Message. However, this messageis intended for the previous SNIU in the new a association's path.Therefore, if the first SNIU to receive this message is an intermediateSNIU, it should process the message and not send it on to theterminating SNIU.

If a SNIU receives a Release Key Unknown Message and it is thedestination, the SNIU must be the terminating SNIU which granted theassociation. The SNIU verifies the signature on the message, swaps thedestination address (its IP) with the peer SNIU address (the associationoriginating SNIU's IP) in the data section, uses the new destinationaddress to locate the peer SNIU's entry in the receiving port'sAssociation Table, removes the certificate from the message, andcompares the DN in the certificate with the DN in the Sym₋₋ Key Tableentry indicated via the peer SNIU's release key pointer. If the DN doesnot match, the SNIU audits the error and over-writes the DN entry withthe DN from the certificate. In either case, the SNIU stores thecertificate in the Certificate Table (over-writing the old one if acertificate with the same DN already exists), generates a new releasekey, over-writes the old release key in the Sym₋₋ Key Table with the newrelease key (Ks-wrapped), wraps the key using the public key from thereceived certificate, stores the wrapped release key in the message,changes the message number from 66 back to 58, stores its certificate inthe message, signs and sends it.

Broadcast: Various messages (non-Dragonfly) are broadcast to everydevice on a network. When a broadcast message is received, the SNIUcreates a Protected User Datagram (containing the received broadcastmessage and the security level of the port on which the message wasreceived) for every peer SNIU to the opposite port's Association Tableand sends them.

Non-Destination SNIU Message Processing

When a SNIU receives an IP datagram which is not addressed to it, themessage should be one of the following types of Dragonfly formattedmessages. If it is not, the SNIU will assume the IP datagram is from anative host.

51. Audit Event: The SNIU verifies the signature on the Message andreleases the message out the opposite port.

52. Audit Catcher List: The SNIU verifies the signature on the messageand releases the message out the opposite port.

53. Audit Catcher Check-In: The SNIU verifies the signature on themessage and releases the message out the opposite port.

54. Audit Mask: The SNIU verifies the signature on the message andreleases the message out the opposite port.

55. Host Unknown: The SNIU verifies the signature on the message andreleases the message out the opposite port

56. Association Request: When a SNIU receives an Association Request, itvalidates the signature at the bottom of the message and checks thereceiving port's Association Table for an entry with the originatingSNIU's IP address. If it cannot find an entry, it creates one, marks theassociation type as `pending`, stores the previous SNIU' certificate inthe Certificate Table, updates the Sym₋₋ Key Table entry for theDistinguished Name (DN), stores the pointer to the Sym₋₋ Key Table entryin the release key pointer field in the Association Table entry, andstore a copy of the received message in the Waiting Queue (and makes acorresponding entry in the Schedule Table If a certificate with this DNalready exists, but is not identical then the SNIU must locate anddelete all other Sym₋₋ Key Table and Association Table entriesreferencing this certificate. If the previous SNIU was an intermediateSNIU (i.e., the Message Format field of the Dragonfly Message Flag is`Signed Type 2`), this SNIU marks the release key type field as `out`and removes the previous SNIU's certificate and signature. In eithercase, this SNIU appends its certificate and signature and sends themessage out other port. It does not make any entry in the out-goingport's Association Table. Finally, the SNIU creates and sends aDragonfly Ping Message (in the form of an ICMP Echo Request) to thedestination host. The SNIU stores the originating SNIU and originatinghost's IP addresses in the datagram and sets the Dragonfly Flag, butdoes not sign the message

57. Association Grant: The SNIU validates the signature at the bottom ofthe received datagram and if not correct deletes the datagram and auditsthe event. Otherwise, since it is not the destination, the SNIU is anintermediate SNIU somewhere in the path between the two peer SNIUs. TheSNIU creates an entry (if one doesn't already exist) in the receivingport's Association Table for the IP of the terminating SNIU whichgranted the association (in the data section of the Association GrantMessage), marks the association type as `SNIU`, marks the release keytype as `m` (if the format is `Signed Type 1`) or `both` (if the formatis `Signed Type 2`), extracts the release key data (i.e., the wrappedMEK, RA and IV), unwraps and stores the release key in the Sym₋₋ KeyTable, stores the release key IV in the same Sym₋₋ Key Table entry,stores the pointer to the release key in the Association Table, storesthe certificate in the Certificate Table, and stores the pointer to thecertificate and the DN in the Sym₋₋ Key Table entry. If a certificatewith this DN already exists, but is not identical, then the SNIU mustlocate and delete all other Sym₋₋ Key Table and Association Tableentries referencing this certificate.

If the received Message contains a flag indicating that an appropriaterelease key already exists, the SNIU uses the release key pointer inevery other `SNIU` type entry in the Association Table and compares theDNs of the certificates associated with the release keys. If a match isfound, the pointer to the matching Sym₋₋ Key Table entry is copied tothe new Association Table entry. If no match is found, the SNIUgenerates a release Key Unknown Message. This message is generated bymodifying the received Association Grant Message. The destinationaddress (i.e., the association originating SNIU's IP) is swapped withthe peer SNIU's address (i.e., the association granting SNIU's IP) inthe data section of the datagram. The previous SNIU's certificate isreplaced with this SNIU's certificate so the previous SNIU can wrap thenew release key and return it to this SNIU in the Association GrantMessage. The signature at the bottom is removed The message number ischanged from 58 to 66. The new message is signed and sent back to theprevious SNIU in the path. Finally, the association type field of theterminating SNIU's entry in the Association Table is changed back to`pending`. If a Release Key Unknown Message is transmitted, the SNIUwaits for the new release key in another Association Grant Messagebefore continuing.

Next, the SNIU uses the destination IP address in the header of thereceived Association Grant Message to find the destination's entry inthe opposite port's Association Table. If the association type is`pending`, the SNIU determines whether an existing release should beused or if a new one should be generated. The SNIU uses the release keypointer to fetch the saved certificate of the next SNIU and compares itsDN with the DN associated with the other release keys identified via therelease key pointers in other `SNIU` type entries. If a match is found,the pointer to the release key's entry in the Sym₋₋ Key Table is copiedto the new Association Table entry. If a match is not found, the SNIUgenerates new release key data (an MEK, RA, and IV) and stores thewrapped MEK and IV in the Sym₋₋ Key Table entry. In either case, theSNIU changes the association type to `SNIU`. If the release key type is`NULL`, the SNIU changes it to `in`; otherwise, it is marked as `both`.

The SNIU uses the original destination host's IP (the source IP in theheader of the Association Grant Message) and the original SNIU's IP(i.e., the destination IP in the header of the Association GrantMessage) to locate the Association Request Message which was saved inthe Waiting Queue and delete it and the corresponding entry in theSchedule Table.

Finally, the SNIU rebuilds the Association Grant Message to send on tothe destination. The SNIU copies the received datagram up to andincluding the association key data and the certificate of the SNIU whichoriginated the Association Grant Message, inserts its certificate andthe release key data (or a flag indicating to use an existing releasekey), and signs and sends the datagram.

58. Association Denial: Currently not implemented.

59. Association Unknown: The SNIU verifies the signature on the messageand releases the message out the opposite port.

60. Protected User Datagram: The SNIU uses the source IP address to findthe appropriate entry in the receiving port's Association Table, fetchesthe release key, and verifies the release key residue. If the releaseresidue is not correct the datagram is delete and the event audited.Otherwise, the SNIU uses the destination IP address to find theappropriate entry in the opposite port's Association Table, fetches therelease key, generates the new release residue, overwrites the oldrelease residue, and sends the datagram on in to the destination.

61. Receipt: The SNIU verifies the signature on the message and releasesthe message out the opposite port.

62. Certificate Revocation List: The SNIU verifies the signature on theMessage and releases the message out the opposite port.

63. Dragonfly Ping: The SNIU ignores (i.e., deletes) the ICMP EchoRequest and does nothing else. It should also receive an AssociationRequest Message which it will process (see description above). Note thatif the datagram is a standard ICMP Echo Request (i.e., no DragonflyFlag), it is treated as any other Native Host Message (see descriptionbelow).

64. SNIU Initialization: The SNIU verifies the signature on the messageand releases the message out the opposite port.

65. Association Exists: When an intermediate SNIU receives this message,it verifies the signature on the message and verifies that it hasentries for both the source and destination IP addresses (i.e., the twopeer SNIUs of the of the association) in the appropriate ports'Association Tables. If everything is verified, the message is releasedout, the opposite port. If either peer SNIU's entry cannot be found inthe Association Table, then this SNIU will return an Association UnknownMessage to the source SNIU. The Message will contain the destinationSNIU's IP address to indicate which association needs to be deleted. Inany case, the SNIU uses the association originating SNIU' s and the hostdestination's addresses in the Association Exists Message to locate anddelete the Association Request Message which was saved in the WaitingQueue (and the appropriate Schedule Table entry).

66. Release Key Unknown: A SNIU may receive an Association Grant Messagewith a flag set to indicate that an existing release key should be used.However, if the SNIU cannot locate the release key, it sends a ReleaseKey Unknown Message back to the previous SNIU requesting it to generatea new release key.

This message is generated by modifying the received Association GrantMessage. The destination address (the association originating SNIU's IP)is swapped with the terminating SNIU's address (i.e., the associationgranting SNIU's IP) in the data section of the datagram The previousSNIU's certificate is replaced with this SNIU's certificate so theprevious SNIU can wrap the new release key and return it to this SNIU inthe Association Grant Message. The signature at the bottom is removed.

The message is changed from 58 to 66, and the new message is signed andsent back to the previous SNIU in the path. Note that this message isaddressed to the terminating SNIU which generated the originalAssociation Grant Message. However, this message is intended for theprevious SNIU in the new association's path. Therefore, if the firstSNIU to receive the message is an intermediate SNIU, it should processthe message and not send it on to the terminating SNIU.

If a SNIU receives a Release Key Unknown Message and it is not thedestination, the SNIU must be an intermediate SNIU somewhere in themiddle of the association's path. The SNIU verifies the signature on themessage, swaps the destination address (the association granting SNIU'sIP) with the per SNIU address (the association originating SNIU's IP) inthe data section, uses the new destination address to locate the peerSNIU's entry in the receiving port's Association Table, removes thebottom certificate from the message, and compares the DN in thecertificate with the DN in the Sym₋₋ Key Table entry indicated via thepeer SNIU's release key pointer. If the DN does not match, the SNIUaudits the error and over-writes the DN entry with the DN from thecertificate. In either case, the SNIU stores the certificate in theCertificate Table (over-writing the old one if a certificate with thesame DN already exists), generates a new release key, over-writes theold release key in the Sym₋₋ Key Table with the new release key (Kswrapped), wraps the key using the public key from the receivedcertificate, stores the wrapped release key in the message, changes themessage number from 66 back to 58, stores its certificate in the m.message, signs and sends it.

Native Host Message: When a SNIU receives a user datagram from a nativehost, the SNIU creates an entry (if one doesn't already exist) in thereceiving port's Association Table for the source host's IP, marks theassociation type as `native host`, sets he security level to thereceiving port's security level, and checks the opposite port'sAssociation Table for the destination's IP address.

If an entry does not already exist for the destination the SNIU createsa new entry, marks the association type as `pending`, stores thereceived datagram in the Waiting Queue, makes a corresponding entry inthe Schedule Table, creates an Association Request Message and sends it.Next, the SNIU creates and sends a Dragonfly Ping to the destinationhost. The SNIU stores the originating SNIU and originating host's IPaddresses in the datagram and sets the Dragonfly Fly but does not signthe message. If an Association Table entry exists for the destinationand the association type is `pending`, the SNIU stores the e receiveddatagram in the e Waiting Queue, linking it to other datagrams for thesame destination.

If an Association Table entry exists for the destination and theassociation type is `host`, the SNIU compares the source host's securitylevel to the destination host's security level. If the source's securitylevel is dominated by (i.e., less than or equal to) the destination's,the SNIU creates a Protected User Datagram (PUD). The SNIU sets thedestination to the peer SNIU's IP, sets the protocol type to indicate aDragonfly Message, uses the association key to encrypt the entirereceived datagram, inserts the ciphertext and IV, appends theassociation residue, generates and inserts a release residue (if theAssociation Table entry contains a pointer to a release key), appendsthe appropriate Dragonfly Message Flag, and sends the datagram. If thesource host is not dominated by the destination (i.e., a potentialwrite-down), the SNIU determines if this datagram was anticipated. If amatching datagram was predicted, the anticipated datagram is transformedinto a PUD (as described above) and sent. If an anticipated message isnot found. the attempted write-down is audited.

If an Association Table entry exists for the destination and theassociation type is any other bona fide type (i.e., `native host`,`SNIU` or `audit catcher`, the SNIU compares the source and destinationports' security levels to determine if the datagram can be allowed toproceed. If the comparison indicates a write-up situation, the SNIUgenerates and saves an anticipated message and releases the originaldatagram to the destination port. If a write-down situation, the SNIUdetermines if the datagram was predicted and sends the anticipatedmessage or audits as previously described. If a write-equal, thedatagram is released to the destination port.

EXEMPLARY MESSAGING USING GUARD SNIUs

The following example is intended to provide a further illustration of apreferred embodiment of a sequence of operations according to thepresent invention. This sequence of operations is applicable tocommunications from a first user utilizing a SNIU to a second user, alsoutilizing a SNIU, sent over an unsecured network.

The first user transmits an original message intended for the seconduser utilizing said network. A first Guard SNIU intercepts the originalmessage. The first Guard SNIU then transmits an association requestmessage intended for another SNIU and a ping message intended for thesecond user.

If the second user receives these messages, and is not utilizing aCompanion SNIU, it will ignore the association request message intendedfor another SNIU and respond to the ping message intended for it. Whenthe first SNIU receives the ping response from the second user, it willdetermine that it is the "closest" SNIU to the second user, and decidewhether transmitting the "original" message to the second SNIU willviolate network security parameters. If it will not, then the first SNIUwill simply forward the "original" message to the second user. Iftransmitting the "original" message to the second user will violatesecurity parameters, then the "original" message will not be transmittedto the second user, and this event will be audited.

When a second SNIU receives the association request message intended foranother SNIU and the ping message intended for the second user whichwere transmitted by the first SNIU, it ignores the ping message intendedfor the second user, and logs the association request message intendedfor another SNIU. It likewise then transmits another association requestmessage intended for another SNIU and another ping message intended forthe second user.

If another SNIU intercepts the second association request messageintended for another SNIU and the second ping message intended for thesecond user, it will perform the same before mentioned steps of thesecond SNIU. Accordingly, an unlimited number of SNIUs can beinterspaced between the first and second SNIUs in the present invention,as each interspaced SNIU will log the association request messagereceived, ignore the ping message received, and further transmit anotherassociation request message, and another ping message.

When the second user receives the association request message intendedfor another SNIU and the retransmitted ping message intended for it, ifnot utilizing a Companion SNIU, it will again ignore the associationrequest message intended for another SNIU and respond to the pingmessage intended for it. When a SNIU receives the ping response from thesecond user, it will determine that it is the "closest" SNIU to thesecond user. Upon this determination it will now respond to theassociation request message transmitted from the first SNIU which itlogged, with an association grant message. This association grantmessage includes necessary information for enforcing the networksecurity policy, such as mandatory access control information (i.e. thesecurity level of the second user, and encryption key affiliated withthe second SNIU).

Upon receipt of the association grant message transmitted by the secondSNIU, the first SNIU can now determine whether allowing the "original"message to be transmitted to the second user will violate any of thenetwork security policies, as the first SNIU now has the security datarequired to make that decision. If the transmission of the "original"message will not violate the network security policy, then using theencryption key included in the association grant message, the first SNIUwill transmit the encrypted "original" message to the second SNIU. Uponreceipt thereof, the second SNIU will decrypt the encrypted "original"message and may again determine whether allowing the "original" messageto proceed to the second user will violate network security parameters(i.e. discretionary access control) If it will not, the second SNIU cannow transmit the "original" message to the second user.

When using the term "closest," in this manner, it is to be understoodthat "closest" refers to that SNIU which is to be associated oraffiliated with the second user.

If the first user is utilizing a Companion SNIU, then that Companion canbe seen to perform the steps of the first SNIU in the above example.

If the second user is utilizing a Companion SNIU, then that Companioncan be seen to perform the steps of the second SNIU.

It is to be understood that the embodiments described herein are merelyexemplary of the principles of the invention, and that a person skilledin the art may make many variations and modifications without departingfrom the spirit and scope of the invention. All such variations andmodifications are intended to be included within the scope of theinvention as defined in the appended claims.

What is claimed is:
 1. A secured network interface unit (SNIU) forproviding multi-level security on a network having a plurality ofsecured and unsecured users comprising:network interface means forcommunicating with other SNIUs, and intercepting and retransmittingpackets on said network, wherein said packets correspond to a messagesent between a source and destination user, both selected from saidplurality of secured and unsecured users; means for identifying saidsource and destination users; associating means for dynamicallydetermining whether another SNIU is affiliated with said destinationuser, and dynamically creating an association with said other SNIU ifone does not already exist; said association including security andencryption data relating to both said source and destination users; atrusted computing base for determining whether said message, ifretransmitted to said destination user, will violate securityparameters; and, cryptographic means for encrypting messages sent to,and decrypting messages received from said other SNIU affiliated withsaid destination user.
 2. The SNIU of claim 1, wherein the only pathbetween said source and destination users is through said SNIU.
 3. TheSNIU of claim 1, wherein said trusted computer base furthercomprises:scheduler means for controlling the flow of data through saidSNIU, access to memory, and ensuring that messages corresponding to thepackets intercepted are not directly retransmitted to said destinationuser, without first accessing said trusted computing base; and, messageparser means for determining whether an association already exists withanother SNIU corresponding to said first and second users.
 4. The SNIUof claim 3, wherein said scheduler means further controls the flow ofdata within said SNIU.
 5. The SNIU of claim 1, further comprising atleast one table for logging an entry relating to select users of saidplurality of secured and unsecured users, each entry including securitydata.
 6. The SNIU of claim 5, wherein said associating means furthercomprising means for substantially simultaneously transmitting a messageintended to evoke a response from said destination user, and a messageintended to evoke a response from another SNIU affiliated with saiddestination user, when there is no entry in said at least one tablecorresponding to said destination user.
 7. The SNIU of claim 6, whereinsaid SNIU further comprises response means for selectively deleting,processing, or forwarding messages received from other SNIUs, based uponthe type of message each is, respectively.
 8. The SNIU of claim 7,wherein said response means further deletes messages intended to evoke aresponse from a destination user, processes messages intended to evoke aresponse from it, and forwards messages intended to evoke a responsefrom another SNIU.
 9. The device of claim 1, wherein said interceptingmeans further processes Address Resolution Protocol (ARP) messages andReverse Address Resolution Protocol (RARP) messages.
 10. The device ofclaim 1, wherein said interface means further coordinates the address ofthe multi-level security network interface with the addresses of saidsource and destination users.
 11. The device of claim 1, furthercomprising audit manager means for generating error messages wheninstructed to by said trusted computing base.
 12. A method of providingmultilevel security network on a network having a plurality of userscomprising:transmitting a first message over said network from a firstuser selected from said plurality intended for a second user selectedfrom said plurality; intercepting said first message with a firstmultilevel security network interface unit (SNIU); transmitting secondand third messages over said network from said first SNIU intended forsaid second user; intercepting said second and third messages, andsaving said second message, utilizing a second SNIU; transmitting fourthand fifth messages over said network intended for said second userutilizing said second SNIU; receiving said fourth and fifth messages atsaid second user, and causing said second user to ignore said fourthmessage and respond to said fifth message by transmitting a sixthmessage over said network intended for said second SNIU; receiving saidsixth message with said second SNIU and transmitting a seventh messageover said network intended for said first SNIU; receiving said seventhmessage with said first SNIU, and transmitting an eighth message oversaid network from said first SNIU intended for said second SNIU;receiving said eighth message with said second SNIU; and, transmittingsaid first message over said network from said second SNIU, and intendedfor said second user.
 13. The method of claim 12, wherein said secondand fourth messages are messages intended to evoke a response from aSNIU affiliated with said second user.
 14. The method of claim 12,wherein said third and fifth messages are messages intended to evoke aresponse from said second user.
 15. The method of claim 12, wherein saidseventh message includes security data.
 16. The method of claim 15,wherein said security data includes the security level of the seconduser and encryption information relating to said second SNIU.
 17. Themethod of claim 16, wherein said eighth message comprises said firstmessage encrypted utilizing said encryption information included in saidseventh message.
 18. The method of claim 15, wherein said first SNIUtransmits said eighth message only if security parameters will not beviolated.
 19. The method of claim 18, wherein said second SNIU transmitssaid first message only if said security parameters will not beviolated.
 20. The method of claim 18, wherein said security parameterscomprise mandatory access control parameters.
 21. The method of claim19, wherein said security parameters comprise discretionary accesscontrol parameters.
 22. The method of claim 12, wherein if said firstSNIU receives a response from said third message, said first SNIUtransmits said first message directly to said second user only ifsecurity parameters will not be violated.
 23. A secured networkinterface unit (SNIU) for providing multi-level security on a networkhaving a plurality of secured and unsecured users comprising:networkinterface means for communicating on said network; means for identifyingthe source and destination of a message intercepted on said network;means for determining the security levels of each of said plurality ofusers; a trusted computing base for determining whether said message, iftransmitted to said destination user, will violate security parameters;and, cryptographic means for encrypting messages sent to, and decryptingmessages received from another SNIU affiliated with said destinationuser.